<?php
//自定义方法
/**
 * 删除数组中的空值 和array_filter($a,'delEmpty')
 * @param $v
 */
function delEmpty($v)
{
    if ($v === "" || $v === "php") //当数组中存在空值和php值时，换回false，也就是去掉该数组中的空值和php值 
{
        return false;
    }
    return true;
}

function data2xml($l1)
{
    if (is_object($l1)) {
        $l1 = get_object_vars($l1);
    }
    $I1 = '';
    foreach ($l1 as $k => $v) {
        is_numeric($k) && $k = "item id=\"{$k}\"";
        $I1 .= "{$k}>";
        $I1 = is_array($l1);
    }
}
/**
 * 判断字符中是否存在特殊符号
 * @param string $l1 字符
 * @param string $l2  符号
 */
function is($l1, $l2 = "&,',\",<,>,\n")
{
    $I2 = explode(',', $l2);
    foreach ($I2 as $v) {
        if (strpos($l1, $v) !== false) {
            return true;
        }
    }
    return false;
}
/**
 * 获得随机数
 * @param int $l1 取得多少位
 */
function getsalt($l1 = 6)
{
    $l3 = '';
    $l2 = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW";
    for ($i = 0; $i < $l1; $i ++) {
        $l3 .= $l2[mt_rand(0, strlen($l2) - 1)];
    }
    return $l3;
}
/**
 * 数组转换键名
 * @param array $arr
 * @param int $key
 */
function change_key(&$arr, $key)
{
    $data = array();
    if (is_array($arr)) {
        foreach ($arr as $val) {
            $data[$val[$key]] = $val;
        }
    }
    return $data;
}
/**
 * 去除空格
 * @param string|array $l
 */
function trim_deep($l)
{
    return is_array($l) ? array_map('trim_deep', $l) : trim($l);
}
/**
 * 字符串加密解密（位运算）
 * 思路 字符串A 和key 生成 b  b和key就能还原b 
 * @param $string
 * @param $action
 * @param $hash
 */
function strcode($string, $aciton = 'ENCODE', $hash = '')
{
    $code = '';
    $aciton != 'ENCODE' && $string = base64_decode($string);
    ! $hash && $hash = 'luge'; //密钥
    $keylen = strlen($hash);
    $strlen = strlen($string);
    for ($i = 0; $i < strlen($string); $i ++) {
        $k = $i % $keylen;
        $code .= $string[$i] ^ $hash[$k];
    }
    return ($aciton != 'DECODE' ? base64_encode($code) : $code);
}
/**
 * 创建文件夹
 * @param unknown_type $dir
 * @param unknown_type $priv
 */
function mkdirs($dir, $priv = 0777)
{
    if (! is_dir($dir)) {
        mkdirs(dirname($dir), $priv);
        return mkdir($dir, $priv);
    }
    return true;
}
/**
 * 获得提交参数 并且转义
 * @param string|array $l 参数名称
 * @param string $l2 类型
 */
function getgpc($l, $l2 = 'r')
{
    switch ($l2) {
        case 'g' :
            $var = &$_GET;
            break;
        case 'p' :
            $var = &$_POST;
            break;
        case 'r' :
            $var = &$_REQUEST;
            break;
        case 'c' :
            $var = &$_COOKIE;
            break;
    }
    return isset($var[$l]) ? trim_deep($var[$l]) : 0;
}
/**
 * 程序执行时间
 */
function runtime()
{
    return round(microtime(true) - $GLOBALS['_MP']['__start_time']);
}
/**
 * 优化include
 * @param string $l1 文件名
 */
function include_cache($l1)
{
    static $I = array();
    if (is_file($l1)) {
        if (! isset($I[$l1])) {
            include $l1;
            $I[$l1] = true;
        }
        return $I[$l1];
    }
    return false;

}

function customError($errLevel, $errString, $errFile, $errLine)
{
    
    if (PHP_OS == "Linux") {
        $modify = "\n";
    } else {
        $modify = "\r\n";
    }
    
    //不捕捉非致命错误
    if ($errLevel > 2) {
        return;
    }
    
    switch ($errLevel) {
        case 2 :
            $level = "E_WARNING";
            break;
        case 8 :
            $level = "E_NOTICE";
            break;
        case 2048 :
            $level = "E_STRICT";
        default :
            $level = $errLevel;
            break;
    }
    
    $errorMark = date("mdHis", time());
    $time = date("m/d H:i", time());
echo    $string = "$errorMark $time ERROR:[$level] $errFile #$errLine $errString" . $modify;
    
    $file = ROOT . "log" . DIRECTORY_SEPARATOR . "PHP" . date("Ymd", time()) . ".txt";
    $handle = fopen($file, "a");
    fwrite($handle, $string);
    fclose($handle);
//    echo "当你看见这条信息，说明程序出现问题，请及时联系网站管理员 电话:0573-82696190 Email:116311316@qq.com  错误编号:<font color=red><b>$errorMark</b></font><br>";
  //  echo "if you see this message,it's Fatal Error,please contact the Web Manager, Tel:0573-82696190 Email:1163111316@qq.com Mark:<font color=red><b>$errorMark</b></font>";
    exit();
}
/**
 * 获得URI
 */
function getquery()
{
    $l = '';
    if (! empty($_SERVER["QUERY_STRING"])) {
        $l = '?' . $_SERVER["QUERY_STRING"];
    }
    return $l;
}
/**
 * 转义字符
 * @param $str
 */
function addslashes_deep($str)
{
    $arr = is_array($str) ? array_map('addslashes', $str) : addslashes($str);
    return $arr;
}
/**
 * 清除转义
 * @param string $l
 */
function stripslashes_deep($l)
{
    return is_array($l) ? array_map('stripslashes_deep', $l) : stripslashes($l);
}

